pict 0.1.2

Half-baked PICT resource rendering in rust
Documentation
# PICT Drawing Opcodes Version 2

| Opcode  | Name                   | Description                                                                                                                                             | Size (in bytes) of additional data       |
| ------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| `$0000` | NOP                    | No operation                                                                                                                                            | 0                                        |
| `$0001` | Clip                   | Clipping region Region size                                                                                                                             |
| `$0002` | BkPat                  | Background pattern                                                                                                                                      | 8                                        |
| `$0003` | TxFont                 | Font number for text (Integer)                                                                                                                          | 2                                        |
| `$0004` | TxFace                 | Text’s font style (0..255)                                                                                                                              | 1                                        |
| `$0005` | TxMode                 | Source mode (Integer)                                                                                                                                   | 2                                        |
| `$0006` | SpExtra                | Extra space (Fixed)                                                                                                                                     | 4                                        |
| `$0007` | PnSize                 | Pen size (Point)                                                                                                                                        | 4                                        |
| `$0008` | PnMode                 | Pen mode (Integer)                                                                                                                                      | 2                                        |
| `$0009` | PnPat                  | Pen pattern                                                                                                                                             | 8                                        |
| `$000A` | FillPat                | Fill pattern                                                                                                                                            | 8                                        |
| `$000B` | OvSize                 | Oval size (Point)                                                                                                                                       | 4                                        |
| `$000C` | Origin                 | dh, dv (Integer)                                                                                                                                        | 4                                        |
| `$000D` | TxSize                 | Text size (Integer)                                                                                                                                     | 2                                        |
| `$000E` | FgColor                | Foreground color (Long)                                                                                                                                 | 4                                        |
| `$000F` | BkColor                | Background color (Long)                                                                                                                                 | 4                                        |
| `$0010` | TxRatio                | Numerator (Point), denominator (Point)                                                                                                                  | 8                                        |
| `$0011` | VersionOp              | Version (0..255)                                                                                                                                        | 1                                        |
| `$0012` | BkPixPat               | Background pixel pattern Variable; see Listing A-1 on page A-17                                                                                         | variable                                 |
| `$0013` | PnPixPat               | Pen pixel pattern Variable; see Listing A-1 on page A-17                                                                                                | variable                                 |
| `$0014` | FillPixPat             | Fill pixel pattern Variable; see Listing A-1 on page A-17                                                                                               | variable                                 |
| `$0015` | PnLocHFrac             | Fractional pen position (Integer—low word of Fixed); if value is not 0.5, pen position is always set to the picture before each text-drawing operation. | 2                                        |
| `$0016` | ChExtra                | Added width for nonspace characters (Integer)                                                                                                           | 2                                        |
| `$0017` | Reserved for Apple use | Not determined                                                                                                                                          |
| `$0018` | Reserved for Apple use | Not determined                                                                                                                                          |
| `$0019` | Reserved for Apple use | Not determined                                                                                                                                          |
| `$001A` | RGBFgCol               | Foreground color (RGBColor)                                                                                                                             | 6                                        |
| `$001B` | RGBBkCol               | Background color (RGBColor)                                                                                                                             | 6                                        |
| `$001C` | HiliteMode             | Highlight mode flag: no data; this opcode is sent before a drawing operation that uses the highlight mode                                               | 0                                        |
| `$001D` | HiliteColor            | Highlight color (RGBColor)                                                                                                                              | 6                                        |
| `$001E` | DefHilite              | Use default highlight color; no data; set highlight to default (from low memory)                                                                        | 0                                        |
| `$001F` | OpColor                | Opcolor (RGBColor)                                                                                                                                      | 6                                        |
| `$0020` | Line                   | pnLoc (Point), newPt (Point)                                                                                                                            | 8                                        |
| `$0021` | LineFrom               | newPt                                                                                                                                                   | (Point) 4                                |
| `$0022` | ShortLine              | pnLoc (Point), dh (–128..127),dv (–128..127)                                                                                                            | 6                                        |
| `$0023` | ShortLineFrom          | dh (–128..127), dv (–128..127)                                                                                                                          | 2                                        |
| `$0024` | Reserved for Apple use | Data length (Integer)                                                                                                                                   | data 2 + data length                     |
| `$0025` | Reserved for Apple use | Data length (Integer)                                                                                                                                   | data 2 + data length                     |
| `$0026` | Reserved for Apple use | Data length (Integer)                                                                                                                                   | data 2 + data length                     |
| `$0027` | Reserved for Apple use | Data length (Integer)                                                                                                                                   | data 2 + data length                     |
| `$0028` | LongText               | txLoc (Point), count (0..255), text                                                                                                                     | 5 + text                                 |
| `$0029` | DHText                 | dh (0..255), count (0..255), text                                                                                                                       | 2 + text                                 |
| `$002A` | DVText                 | dv (0..255), count (0..255), text                                                                                                                       | 2 + text                                 |
| `$002B` | DHDVText               | dh (0..255), dv (0..255), count(0..255),                                                                                                                | text 3 + text                            |
| `$002C` | fontName               | Data length (Integer), old font ID (Integer), name length (0..255),                                                                                     | font name\*5 + name length               |
| `$002D` | lineJustify            | Operand data length (Integer),intercharacter spacing (Fixed), total extra space for justification (Fixed)†                                              | 10                                       |
| `$002E` | glyphState             | Data length (word), followed by these 1-byte Boolean values: outline preferred, preserve glyph, fractional widths, scaling disabled                     |
| `$002F` | Reserved for Apple use | Data length (Integer), data 2 + data length                                                                                                             |
| `$0030` | frameRect              | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0031` | paintRect              | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0032` | eraseRect              | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0033` | invertRect             | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0034` | fillRect               | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0035` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0036` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0037` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0038` | frameSameRect          | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$0039` | paintSameRect          | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$003A` | eraseSameRect          | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$003B` | invertSameRect         | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$003C` | fillSameRect           | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$003D` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$003E` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$003F` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$0040` | frameRRect             | Rectangle (Rect)‡                                                                                                                                       | 8                                        |
| `$0041` | paintRRect             | Rectangle (Rect)‡                                                                                                                                       | 8                                        |
| `$0042` | eraseRRect             | Rectangle (Rect)‡                                                                                                                                       | 8                                        |
| `$0043` | invertRRect            | Rectangle (Rect)‡                                                                                                                                       | 8                                        |
| `$0044` | fillRRect              | Rectangle (Rect)‡                                                                                                                                       | 8                                        |
| `$0045` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0046` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0047` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0048` | frameSameRRect         | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$0049` | paintSameRRect         | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$004A` | eraseSameRRect         | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$004B` | invertSameRRect        | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$004C` | fillSameRRect          | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$004D` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$004E` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$004F` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$0050` | frameOval              | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0051` | paintOval              | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0052` | eraseOval              | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0053` | invertOval             | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0054` | fillOval               | Rectangle (Rect)                                                                                                                                        | 8                                        |
| `$0055` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0056` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0057` | Reserved for Apple use | 8 bytes of data                                                                                                                                         | 8                                        |
| `$0058` | frameSameOval          | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$0059` | paintSameOval          | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$005A` | eraseSameOval          | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$005B` | invertSameOval         | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$005C` | fillSameOval           | Rectangle (Rect)                                                                                                                                        | 0                                        |
| `$005D` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$005E` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$005F` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$0060` | frameArc               | Rectangle (Rect), startAngle, arcAngle                                                                                                                  | 12                                       |
| `$0061` | paintArc               | Rectangle (Rect), startAngle, arcAngle                                                                                                                  | 12                                       |
| `$0062` | eraseArc               | Rectangle (Rect), startAngle, arcAngle                                                                                                                  | 12                                       |
| `$0063` | invertArc              | Rectangle (Rect), startAngle, arcAngle                                                                                                                  | 12                                       |
| `$0064` | fillArc                | Rectangle (Rect), startAngle, arcAngle                                                                                                                  | 12                                       |
| `$0065` | Reserved for Apple use | 12 bytes of data                                                                                                                                        | 12                                       |
| `$0066` | Reserved for Apple use | 12 bytes of data                                                                                                                                        | 12                                       |
| `$0067` | Reserved for Apple use | 12 bytes of data                                                                                                                                        | 12                                       |
| `$0068` | frameSameArc           | Rectangle (Rect)                                                                                                                                        | 4                                        |
| `$0069` | paintSameArc           | Rectangle (Rect)                                                                                                                                        | 4                                        |
| `$006A` | eraseSameArc           | Rectangle (Rect)                                                                                                                                        | 4                                        |
| `$006B` | invertSameArc          | Rectangle (Rect)                                                                                                                                        | 4                                        |
| `$006C` | fillSameArc            | Rectangle (Rect)                                                                                                                                        | 4                                        |
| `$006D` | Reserved for Apple use | 4 bytes of data                                                                                                                                         | 4                                        |
| `$006E` | Reserved for Apple use | 4 bytes of data                                                                                                                                         | 4                                        |
| `$006F` | Reserved for Apple use | 4 bytes of data                                                                                                                                         | 4                                        |
| `$0070` | framePoly              | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0071` | paintPoly              | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0072` | erasePoly              | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0073` | invertPoly             | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0074` | fillPoly               | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0075` | Reserved for Apple use | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0076` | Reserved for Apple use | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0077` | Reserved for Apple use | Polygon (Poly)                                                                                                                                          | Polygon size                             |
| `$0078` | frameSamePoly          | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$0079` | paintSamePoly          | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$007A` | eraseSamePoly          | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$007B` | invertSamePoly         | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$007C` | fillSamePoly           | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$007D` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$007E` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$007F` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$0080` | frameRgn               | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0081` | paintRgn               | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0082` | eraseRgn               | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0083` | invertRgn              | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0084` | fillRgn                | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0085` | Reserved for Apple use | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0086` | Reserved for Apple use | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0087` | Reserved for Apple use | Region (Rgn)                                                                                                                                            | Region size                              |
| `$0088` | frameSameRgn           | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$0089` | paintSameRgn           | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$008A` | eraseSameRgn           | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$008B` | invertSameRgn          | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$008C` | fillSameRgn            | (Not yet implemented)                                                                                                                                   | 0                                        |
| `$008D` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$008E` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$008F` | Reserved for Apple use |                                                                                                                                                         | 0                                        |
| `$0090` | BitsRect               | CopyBits with clipped rectangle                                                                                                                         | Variable§¶; see Listing A-2 on page A-17 |
| `$0091` | BitsRgn                | CopyBits with clipped region                                                                                                                            | Variable§¶; see Listing A-3 on page A-18 |
| `$0092` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$0093` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$0094` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$0095` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$0096` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$0097` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$0098` | PackBitsRect           | Packed CopyBits with clipped rectangle                                                                                                                  | Variable§; see Listing A-2 on page A-17  |
| `$0099` | PackBitsRgn            | Packed CopyBits with clipped rectangle                                                                                                                  | Variable§; see Listing A-3 on page A-18  |
| `$009A` | DirectBitsRect         | PixMap, srcRect, dstRect, mode (Integer), PixData                                                                                                       | Variable                                 |
| `$009B` | DirectBitsRgn          | PixMap, srcRect, dstRect, mode (Integer), maskRgn, PixData                                                                                              | Variable                                 |
| `$009C` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$009D` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$009E` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$009F` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
| `$00A0` | ShortComment           | Kind                                                                                                                                                    | (Integer) 2                              |
| `$00A1` | LongComment            | Kind (Integer), size (Integer), data                                                                                                                    | 4 + data                                 |
| `$00A2` | Reserved for Apple use | Data length (Integer), data                                                                                                                             | 2 + data length                          |
|||||
| `$00AF` | Reserved               | for Apple use Data length (Integer), data                                                                                                               | 2 + data length                          |
| `$00B0` | Reserved               | for Apple use                                                                                                                                           | 0                                        |
|||||
| `$00CF` | Reserved               | for Apple use                                                                                                                                           | 0                                        |
| `$00D0` | Reserved               | for Apple use Data length (Long), data                                                                                                                  | 4 + data length                          |
|||||
| `$00FE` | Reserved               | for Apple use Data length (Long), data                                                                                                                  | 4 + data length                          |
| `$00FF` | OpEndPic               | End of picture                                                                                                                                          | 2                                        |
| `$0100` | Reserved for Apple use | 2 bytes of data                                                                                                                                         | 2                                        |
| `$01FF` | Reserved for Apple use | 2 bytes of data                                                                                                                                         | 2                                        |
| `$0200` | Reserved               | for Apple use 4 bytes of data 4                                                                                                                         |
| `$02FF` | Version                | Version number of picture 2                                                                                                                             |
|||||
| `$0BFF` | Reserved for Apple use | 22 bytes of data                                                                                                                                        | 22                                       |
| `$0C00` | HeaderOp               | For extended version 2: version (Integer), reserved (Integer), hRes, vRes (Fixed), srcRect, reserved (Long);for version 2: opcode 24                    |
| `$0C01` | Reserved for Apple use | 24 bytes of data                                                                                                                                        | 24                                       |
|||||
| `$7F00` | Reserved for Apple use | 254 bytes of data                                                                                                                                       | 254                                      |
|||||
| `$7FFF` | Reserved for Apple use | 254 bytes of data                                                                                                                                       | 254                                      |
| `$8000` | Reserved               | for Apple use                                                                                                                                           | 0                                        |
|||||
| `$80FF` | Reserved               | for Apple use                                                                                                                                           | 0                                        |
| `$8100` | Reserved               | for Apple use Data length (Long), data 4 + data length                                                                                                  |
|||||
| `$8200` | CompressedQuickTime    | Data length (Long), data (private to QuickTime)                                                                                                         | 4 + data length                          |
| `$8201` | UncompressedQuickTime  | Data length (Long), data (private to QuickTime)                                                                                                         | 4 + data length                          |
| `$FFFF` | Reserved               | for Apple use Data length (Long), data                                                                                                                  | 4 + data length                          |